Knowing what species inhabit an area is important for conservation and ecosystem management. In particular, it can help us find out how many known species are in a given area, whether each species is common or rare, and whether any species are threatened or endangered.
In this post, we will use the galah, waffle and ggplot2 packages to show you how to download a list of species within the Yass Valley in 2023, cross-reference this list with state-wide conservation status lists, and visualise the number of threatened and sensitive species in the region.
For those unfamiliar with Australian geography, Yass Valley is located here:
Download a list of species
There are two ways to narrow a download query to return information for a specific region:
- Using fields available in galah (downloaded from the ALA)
- Using a shapefile
The method you choose depends on whether the region you wish to return species for is already within galah, or whether you require a list for a more specific area defined by a shapefile.
First let’s load our packages.
library(dplyr)
library(ggplot2)
library(readr)
library(sf)
library(rmapshaper)
library(here)
library(galah)To download species lists, you will also need to enter a registered email with the ALA using galah_config().
galah_config(email = "your-email-here")Search for fields in galah
To find which fields and layers exist within galah to help us narrow our query, we can use the search_all() function. Let’s do a text search to find what fields contain information on “Local Government Areas”.
search_all(fields, "Local Government Areas")# A tibble: 4 × 3
id description type
<chr> <chr> <chr>
1 cl10923 PSMA Local Government Areas (2018) fields
2 cl110923 PSMA Local Government Areas - Abbreviated (2018) fields
3 cl11170 Local Government Areas 2023 fields
4 cl959 Local Government Areas fields
The field cl109231 appears to contain the most recent data (from 2018). We can preview what values are within the field cl10923 using show_values().
search_all(fields, "cl10923") |>
show_values()• Showing values for 'cl10923'.
# A tibble: 560 × 1
cl10923
<chr>
1 BRISBANE CITY
2 GREATER GEELONG CITY
3 EAST GIPPSLAND SHIRE
4 MORETON BAY REGIONAL
5 PASTORAL UNINCORPORATED AREA
6 COOK SHIRE
7 CAIRNS REGIONAL
8 TOWNSVILLE CITY
9 SUNSHINE COAST REGIONAL
10 CENTRAL COAST COUNCIL
# ℹ 550 more rows
There are lots of Local Government Areas! To check that Yass Valley is included, we can do a text search for values that match “YASS VALLEY”.
search_all(fields, "cl10923") |>
search_values("YASS VALLEY")• Showing values for 'cl10923'.
# A tibble: 1 × 1
cl10923
<chr>
1 YASS VALLEY COUNCIL
Download data
Using the field and category returned above, we can now build our query. We begin our query with galah_call() and filter our query to only Yass Valley in the year 2023. We then specify we wish to return a species list by ending our query with atlas_species().
species_yass <- galah_call() |>
filter(cl10923 == "YASS VALLEY COUNCIL",
year == 2023) |>
atlas_species()
species_yass# A tibble: 1,154 × 11
taxon_concept_id species_name scientific_name_auth…¹ taxon_rank kingdom
<chr> <chr> <chr> <chr> <chr>
1 https://biodiversity.… Gymnorhina … (Latham, 1801) species Animal…
2 https://biodiversity.… Cacatua (Ca… (Latham, 1790) species Animal…
3 https://biodiversity.… Malurus (Ma… (Ellis, 1782) species Animal…
4 https://biodiversity.… Eolophus ro… (Vieillot, 1817) species Animal…
5 https://biodiversity.… Platycercus… (Gmelin, 1788) species Animal…
6 https://biodiversity.… Rhipidura (… Gould, 1840 species Animal…
7 https://biodiversity.… Corvus coro… Vigors & Horsfield, 1… species Animal…
8 https://biodiversity.… Strepera (S… (Shaw, 1790) species Animal…
9 https://biodiversity.… Grallina cy… (Latham, 1801) species Animal…
10 https://biodiversity.… Cormobates … (Latham, 1801) species Animal…
# ℹ 1,144 more rows
# ℹ abbreviated name: ¹scientific_name_authorship
# ℹ 6 more variables: phylum <chr>, class <chr>, order <chr>, family <chr>,
# genus <chr>, vernacular_name <chr>
It’s also possible to group by each species and return the observations counts by ending our query with atlas_counts().
species_counts <- galah_call() |>
filter(cl10923 == "YASS VALLEY COUNCIL",
year == 2023) |>
group_by(species) |>
atlas_counts()
species_counts# A tibble: 1,154 × 2
species count
<chr> <int>
1 Gymnorhina tibicen 1197
2 Cacatua galerita 892
3 Malurus cyaneus 827
4 Eolophus roseicapilla 797
5 Platycercus elegans 789
6 Rhipidura albiscapa 709
7 Corvus coronoides 634
8 Strepera graculina 530
9 Grallina cyanoleuca 526
10 Cormobates leucophaea 489
# ℹ 1,144 more rows
Download shapefile
To retrieve the spatial outline of Yass Valley, let’s download the latest Local Government Areas data from the Australian Bureau of Statistics Digital Boundary files page. Find “Local Government Areas - 2023 - Shapefile” and click “Download ZIP”. Save the zip folder in your current directory and unzip it.
Let’s read the file into R. We will also simplify the shapefile2 using ms_simplify() from the rmapshaper package because complex shapefiles can sometimes cause problems with sending queries to the ALA.
lga <- sf::st_read(here("LGA_2023_AUST_GDA2020.shp")) |>
rmapshaper::ms_simplify(keep = 0.01)
lgaSimple feature collection with 544 features and 8 fields
Geometry type: GEOMETRY
Dimension: XY
Bounding box: xmin: 105.5335 ymin: -43.6331 xmax: 167.9969 ymax: -9.229273
Geodetic CRS: GDA2020
First 10 features:
LGA_CODE23 LGA_NAME23 AUS_CODE21 STE_CODE21 STE_NAME21 AREASQKM
1 10050 Albury AUS 1 New South Wales 305.6386
2 10180 Armidale AUS 1 New South Wales 7809.4406
3 10250 Ballina AUS 1 New South Wales 484.9692
4 10300 Balranald AUS 1 New South Wales 21690.7493
5 10470 Bathurst AUS 1 New South Wales 3817.8645
6 10500 Bayside (NSW) AUS 1 New South Wales 50.6204
7 10550 Bega Valley AUS 1 New South Wales 6278.5013
8 10600 Bellingen AUS 1 New South Wales 1600.4338
9 10650 Berrigan AUS 1 New South Wales 2065.8878
10 10750 Blacktown AUS 1 New South Wales 238.8471
AUS_NAME21 LOCI_URI21
1 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10050
2 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10180
3 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10250
4 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10300
5 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10470
6 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10500
7 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10550
8 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10600
9 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10650
10 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/10750
geometry
1 POLYGON ((146.8177 -36.0673...
2 POLYGON ((152.2957 -30.9310...
3 POLYGON ((153.4496 -28.7550...
4 POLYGON ((143.5525 -33.1404...
5 POLYGON ((149.3947 -33.9975...
6 POLYGON ((151.155 -33.92618...
7 POLYGON ((149.9762 -37.5051...
8 POLYGON ((152.8035 -30.1895...
9 POLYGON ((145.4845 -35.5119...
10 POLYGON ((150.8129 -33.8223...
Now let’s transform the Coordinate Reference System (CRS) of our shapefile to EPSG:4326 (the standard used in cartography and GPS, also known as WGS84) so that it matches the projection of our data from the ALA 3.
lga <- lga |>
st_transform(crs = 4326)Next we can filter our shapefile to only Yass Valley. The column LGA_NAME23 contains area names, and we can filter our data frame to only rows where LGA_NAME23 is equal to Yass Valley. We are left with a single polygon shape of Yass Valley.
yass_valley <- lga |>
filter(LGA_NAME23 == "Yass Valley")
yass_valleySimple feature collection with 1 feature and 8 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 148.5223 ymin: -35.31692 xmax: 149.4226 ymax: -34.53557
Geodetic CRS: WGS 84
LGA_CODE23 LGA_NAME23 AUS_CODE21 STE_CODE21 STE_NAME21 AREASQKM
1 18710 Yass Valley AUS 1 New South Wales 3995.017
AUS_NAME21 LOCI_URI21
1 Australia https://linked.data.gov.au/dataset/asgsed3/LGA2023/18710
geometry
1 POLYGON ((148.9476 -34.6440...
Download data
Now that yass_valley contains our LGA shape, we can build our query. Once again, we’ll begin our query with galah_call() and filter to only records from 2023. We can also specify we want records within our yass_valley shapefile with galah_geolocate(). We then specify we wish to return a species list by ending our query with atlas_species().
species_yass <- galah_call() |>
filter(year == 2023) |>
galah_geolocate(yass_valley) |>
atlas_species()
species_yass# A tibble: 1,207 × 11
taxon_concept_id species_name scientific_name_auth…¹ taxon_rank kingdom
<chr> <chr> <chr> <chr> <chr>
1 https://biodiversity.… Gymnorhina … (Latham, 1801) species Animal…
2 https://biodiversity.… Malurus (Ma… (Ellis, 1782) species Animal…
3 https://biodiversity.… Cacatua (Ca… (Latham, 1790) species Animal…
4 https://biodiversity.… Eolophus ro… (Vieillot, 1817) species Animal…
5 https://biodiversity.… Platycercus… (Gmelin, 1788) species Animal…
6 https://biodiversity.… Corvus coro… Vigors & Horsfield, 1… species Animal…
7 https://biodiversity.… Grallina cy… (Latham, 1801) species Animal…
8 https://biodiversity.… Rhipidura (… Gould, 1840 species Animal…
9 https://biodiversity.… Strepera (S… (Shaw, 1790) species Animal…
10 https://biodiversity.… Hirundo (Hi… Gould, 1843 species Animal…
# ℹ 1,197 more rows
# ℹ abbreviated name: ¹scientific_name_authorship
# ℹ 6 more variables: phylum <chr>, class <chr>, order <chr>, family <chr>,
# genus <chr>, vernacular_name <chr>
It’s also possible to group by each species and return the observations counts by ending our query with atlas_counts().
species_counts <- galah_call() |>
filter(year == 2023) |>
galah_geolocate(yass_valley) |>
group_by(species) |>
atlas_counts()
species_counts# A tibble: 1,207 × 2
species count
<chr> <int>
1 Gymnorhina tibicen 1614
2 Malurus cyaneus 1204
3 Cacatua galerita 1146
4 Eolophus roseicapilla 1065
5 Platycercus elegans 1014
6 Corvus coronoides 878
7 Grallina cyanoleuca 868
8 Rhipidura albiscapa 863
9 Strepera graculina 767
10 Hirundo neoxena 708
# ℹ 1,197 more rows
Cross-reference with threatened and sensitive species lists
Next we will compare our Yass valley species list with several state-wide conservation status lists of threatened and sensitive species. We can retrieve lists of threatened and sensitive species in one of two ways:
- Use the lists available in the Atlas of Living Australia
- Use your own list
Both use the same method of matching species names in our Yass Valley list to species names in official conservation status lists. However, there is a slightly different workflow between using galah and using an externally downloaded list. Choose from the options below to use either method.
We can use galah to access lists that are available on the Atlas of Living Australia to compare to our Yass Valley species list.
Yass Valley is within the state of New South Wales, so let’s do a text search for “New South Wales” to see what state-specific lists are available.
search_all(lists, "New South Wales")# A tibble: 2 × 21
species_list_uid listName listType dateCreated lastUpdated lastUploaded
<chr> <chr> <chr> <chr> <chr> <chr>
1 dr650 New South Wale… CONSERV… 2015-04-04… 2024-05-30… 2024-05-30T…
2 dr487 New South Wale… SENSITI… 2013-06-20… 2024-07-12… 2024-07-12T…
# ℹ 15 more variables: lastMatched <chr>, username <chr>, itemCount <int>,
# region <chr>, isAuthoritative <lgl>, isInvasive <lgl>, isThreatened <lgl>,
# isBIE <lgl>, isSDS <lgl>, wkt <chr>, category <chr>, generalisation <chr>,
# authority <chr>, sdsType <chr>, looseSearch <lgl>
Two lists are returned, and both appear relevant. With the help of some additional columns returned by search_all()—listType, isAuthoritative and isThreatened—we can learn more about which list suits our needs best. Although both lists are authoritative, only one list (dr650) contains threatened species whereas the other dr487 contains sensitive species.
search_all(lists, "New South Wales") |>
select(species_list_uid, listType, isAuthoritative, isThreatened)# A tibble: 2 × 4
species_list_uid listType isAuthoritative isThreatened
<chr> <chr> <lgl> <lgl>
1 dr650 CONSERVATION_LIST TRUE TRUE
2 dr487 SENSITIVE_LIST TRUE FALSE
We can return only species in Yass Valley on the New South Wales Conservation Status List (dr650) by filtering to species_list_uid == dr650. Our query returns 31 species.
yass_threatened <- galah_call() |>
galah_filter(species_list_uid == dr650,
year == 2023) |>
galah_geolocate(yass_valley) |>
atlas_species()
yass_threatened# A tibble: 31 × 11
taxon_concept_id species_name scientific_name_auth…¹ taxon_rank kingdom
<chr> <chr> <chr> <chr> <chr>
1 https://biodiversity.… Petroica (P… (Lesson, 1838) species Animal…
2 https://biodiversity.… Callocephal… (Grant, 1803) species Animal…
3 https://biodiversity.… Polytelis s… (Desmarest, 1826) species Animal…
4 https://biodiversity.… Hieraaetus … (Gould, 1841) species Animal…
5 https://biodiversity.… Petroica (L… Gould, 1837 species Animal…
6 https://biodiversity.… Daphoenosit… (Latham, 1801) species Animal…
7 https://biodiversity.… Pyrrholaemu… (Latham, 1801) species Animal…
8 https://biodiversity.… Stagonopleu… (Shaw, 1796) species Animal…
9 https://biodiversity.… Haliaeetus … (Gmelin, 1788) species Animal…
10 https://biodiversity.… Stictonetta… (Gould, 1841) species Animal…
# ℹ 21 more rows
# ℹ abbreviated name: ¹scientific_name_authorship
# ℹ 6 more variables: phylum <chr>, class <chr>, order <chr>, family <chr>,
# genus <chr>, vernacular_name <chr>
We can do the same using the New South Wales Sensitive Species (dr487). Our query returns 5 species.
yass_sensitive <- galah_call() |>
galah_filter(species_list_uid == dr487,
year == 2023) |>
galah_geolocate(yass_valley) |>
atlas_species()
yass_sensitive# A tibble: 5 × 11
taxon_concept_id species_name scientific_name_auth…¹ taxon_rank kingdom phylum
<chr> <chr> <chr> <chr> <chr> <chr>
1 https://biodive… Callocephal… (Grant, 1803) species Animal… Chord…
2 https://biodive… Polytelis s… (Desmarest, 1826) species Animal… Chord…
3 https://id.biod… Grevillea i… McGill. species Plantae Charo…
4 https://biodive… Ninox (Rhab… (Gould, 1838) species Animal… Chord…
5 https://id.biod… Prasophyllu… D.L.Jones & R.J.Bates species Plantae Charo…
# ℹ abbreviated name: ¹scientific_name_authorship
# ℹ 5 more variables: class <chr>, order <chr>, family <chr>, genus <chr>,
# vernacular_name <chr>
To return the count of species records, we can group by species and end our query with atlas_counts()
yass_sensitive_counts <- galah_call() |>
galah_filter(species_list_uid == dr487,
year == 2023) |>
galah_geolocate(yass_valley) |>
galah_group_by(species) |>
atlas_counts()
yass_sensitive_counts# A tibble: 5 × 2
species count
<chr> <int>
1 Callocephalon fimbriatum 97
2 Polytelis swainsonii 94
3 Grevillea iaspicula 7
4 Ninox strenua 5
5 Prasophyllum petilum 1
We can use our own conservation status lists from an external source to compare to our Yass Valley species list.
As an example, we are using the the New South Wales Conservation Status List and the New South Wales Sensitive Species List4.
First, let’s read in both lists and see what each list looks like.
threatened_list <- read_csv(here("path", "to", "example_TSL.csv"))
sensitive_list <- read_csv(here("path", "to", "example_SSL.csv"))Let’s filter our Yass Valley species to only those that are also in our threatened_list. We return 31 species.
yass_threatened <- species_yass |>
filter(species_name %in% yass_threatened$species_name)
yass_threatened# A tibble: 31 × 11
taxon_concept_id species_name scientific_name_auth…¹ taxon_rank kingdom
<chr> <chr> <chr> <chr> <chr>
1 https://biodiversity.… Petroica (P… (Lesson, 1838) species Animal…
2 https://biodiversity.… Artamus (An… (Latham, 1801) species Animal…
3 https://biodiversity.… Callocephal… (Grant, 1803) species Animal…
4 https://biodiversity.… Polytelis s… (Desmarest, 1826) species Animal…
5 https://biodiversity.… Hieraaetus … (Gould, 1841) species Animal…
6 https://biodiversity.… Petroica (L… Gould, 1837 species Animal…
7 https://biodiversity.… Daphoenosit… (Latham, 1801) species Animal…
8 https://biodiversity.… Pyrrholaemu… (Latham, 1801) species Animal…
9 https://biodiversity.… Stagonopleu… (Shaw, 1796) species Animal…
10 https://biodiversity.… Haliaeetus … (Gmelin, 1788) species Animal…
# ℹ 21 more rows
# ℹ abbreviated name: ¹scientific_name_authorship
# ℹ 6 more variables: phylum <chr>, class <chr>, order <chr>, family <chr>,
# genus <chr>, vernacular_name <chr>
We can do the same with our sensitive_list, which returns 5 species.
yass_sensitive <- species_yass |>
filter(species_name %in% yass_sensitive$species_name)
yass_sensitive# A tibble: 5 × 11
taxon_concept_id species_name scientific_name_auth…¹ taxon_rank kingdom phylum
<chr> <chr> <chr> <chr> <chr> <chr>
1 https://biodive… Callocephal… (Grant, 1803) species Animal… Chord…
2 https://biodive… Polytelis s… (Desmarest, 1826) species Animal… Chord…
3 https://id.biod… Grevillea i… McGill. species Plantae Charo…
4 https://biodive… Ninox (Rhab… (Gould, 1838) species Animal… Chord…
5 https://id.biod… Prasophyllu… D.L.Jones & R.J.Bates species Plantae Charo…
# ℹ abbreviated name: ¹scientific_name_authorship
# ℹ 5 more variables: class <chr>, order <chr>, family <chr>, genus <chr>,
# vernacular_name <chr>
Visualise species conservation status
One useful way to visualise the number of threatened and sensitive species in an area is using a waffle chart. Waffle charts are useful because they can show the total number of species (represented as individual square units) and proportions of different groups (represented by colours).
For example, we can visualse the number and proportion of species with different conservation status, along with a taxonomic breakdown of threatened/sensitive species.
Code
library(waffle)
library(showtext)
library(glue)
# Add conservation status & taxa groups for plotting
species_yass_grouped <- species_yass |>
mutate(
conservation_status = case_when(
species_name %in% yass_sensitive$species_name ~ "Sensitive",
species_name %in% yass_threatened$species_name ~ "Threatened",
.default = "No status"
),
taxa_group = case_when(
class == "Aves" ~ "Birds",
class == "Reptilia" ~ "Reptiles",
class == "Mammalia" ~ "Mammals",
kingdom == "Plantae" ~ "Plants",
.default = "Other"
)
)
# Count number of species by conservation status
status_table <- species_yass_grouped |>
group_by(conservation_status) |>
summarise(n = n()) |>
mutate(proportion = n/sum(n)*100)
# Count number of species by taxonomic group
taxa_table <- species_yass_grouped |>
filter(conservation_status %in% c("Sensitive", "Threatened")) |>
group_by(taxa_group) |>
summarise(n = n()) |>
mutate(proportion = n/sum(n)*100)
# Extract percentage that are threatened/sensitive species
prop_threatened_or_sensitive <- status_table |>
filter(conservation_status %in% c("Sensitive", "Threatened")) |>
summarise(total = sum(proportion)) |>
pull(total) |>
round(2)
# Add nicer font
font_add_google("Roboto", "roboto")
showtext_auto()
# Plot 1 Waffle: Conservation Status
waffle_status <-
ggplot(status_table) +
waffle::geom_waffle(aes(fill = conservation_status,
colour = conservation_status,
values = n),
n_rows = 17,
height = 0.75,
width = 0.75,
size = 1) +
scale_colour_manual(name = "Conservation\nStatus",
values = c("#F3E6DC", "#D89A98", "#AB423F"),
labels = c("No status", "Sensitive", "Threatened")) +
scale_fill_manual(name = "Conservation\nStatus",
values = c("#F3E6DC", "#D89A98", "#AB423F"),
labels = c("No status", "Sensitive", "Threatened")) +
labs(title = glue::glue("{prop_threatened_or_sensitive}% of total species in \\
Yass Valley are threatened or sensitive"),
caption = "1 square = 1 species") +
coord_equal() +
theme_void() +
theme(legend.position = "bottom",
text = element_text(family = "roboto", lineheight = 0.5),
legend.title = element_text(hjust = 0.5, size = 20),
legend.text = element_text(size = 19),
plot.title = element_text(hjust = 0.5, size = 25),
plot.caption = element_text(size = 17),
plot.margin = margin(0.5, 1, 0.5, 1, unit = "cm"))
# Plot 2: Taxonomic breakdown
waffle_taxa <-
ggplot(taxa_table) +
waffle::geom_waffle(aes(fill = taxa_group,
colour = taxa_group,
values = n),
n_rows = 4,
height = 0.75,
width = 0.75,
size = 1) +
scale_colour_manual(name = "Group",
values = c("#567C7C", "#6D714A", "#465743", "#22352C", "#C4AC79"),
labels = c("Birds", "Mammals", "Other", "Plants", "Reptiles")) +
scale_fill_manual(name = "Group",
values = c("#567C7C", "#6D714A", "#465743", "#22352C", "#C4AC79"),
labels = c("Birds", "Mammals", "Other", "Plants", "Reptiles")) +
labs(title = "Taxonomic breakdown of threatened & sensitive species",
caption = "1 square = 1 species") +
coord_equal() +
theme_void() +
theme(legend.position = "bottom",
text = element_text(family = "roboto"),
legend.title = element_text(hjust = 0.5, size = 20),
legend.text = element_text(size = 19),
plot.title = element_text(hjust = 0.5, size = 25),
plot.caption = element_text(size = 17, hjust = 1),
plot.margin = margin(0.5, 2.5, 0.5, 2.5, unit = "cm"))Final thoughts
We hope this post has helped you understand how to download a species list for a specific area and compare it to conservation lists. It’s also possible to compare species with other information like lists of migratory species or seasonal species.
For other posts, check out our beginner’s guide to map species observations or see an investigation of dingo observations in the ALA.
Expand for session info
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.4.1 (2024-06-14 ucrt)
os Windows 10 x64 (build 19045)
system x86_64, mingw32
ui RTerm
language (EN)
collate English_Australia.utf8
ctype English_Australia.utf8
tz Australia/Sydney
date 2024-08-20
pandoc 3.1.11 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.3.2)
galah * 2.0.2 2024-04-12 [1] CRAN (R 4.4.1)
ggplot2 * 3.5.1 2024-04-23 [1] CRAN (R 4.4.0)
glue * 1.6.2 2022-02-24 [1] CRAN (R 4.3.2)
here * 1.0.1 2020-12-13 [1] CRAN (R 4.3.2)
htmltools * 0.5.7 2023-11-03 [1] CRAN (R 4.3.2)
ozmaps * 0.4.5 2021-08-03 [1] CRAN (R 4.3.2)
readr * 2.1.5 2024-01-10 [1] CRAN (R 4.3.3)
rmapshaper * 0.5.0 2023-04-11 [1] CRAN (R 4.3.2)
sessioninfo * 1.2.2 2021-12-06 [1] CRAN (R 4.3.2)
sf * 1.0-16 2024-03-24 [1] CRAN (R 4.3.3)
showtext * 0.9-6 2023-05-03 [1] CRAN (R 4.3.2)
showtextdb * 3.0 2020-06-04 [1] CRAN (R 4.3.2)
sysfonts * 0.8.8 2022-03-13 [1] CRAN (R 4.3.2)
waffle * 1.0.2 2024-05-03 [1] Github (hrbrmstr/waffle@767875b)
[1] C:/Users/KEL329/R-packages
[2] C:/Users/KEL329/AppData/Local/Programs/R/R-4.4.1/library
──────────────────────────────────────────────────────────────────────────────
Footnotes
Each spatial layer has a two letter code, along with a number to identify it. The abbreviations are as follows: *
cl= contextual layer (i.e. boundaries of LGAs, Indigenous Protected Areas, States/Territories etc.)
*10923= number associated with the spatial layer in the atlas↩︎Simplifying a shapefile removes the number of total points that draw the shape outline.↩︎
Check out this post for a better explanation of what CRS is and how it affects maps.↩︎
These are the same two lists that you can access in galah, available from the Atlas of Living Australia. Keep in mind that if you use an external list, data cleaning may be required before matching species names.↩︎